home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / MATH / MATH1 / LINFIT1.LIB < prev    next >
Text File  |  1985-04-03  |  896b  |  40 lines

  1.  
  2. { -> 159 }
  3. procedure linfit(x,y: ary;
  4.          var y_calc: ary;
  5.          var a,b:    real;
  6.             n:   integer);
  7. { fit a straight line (y_calc) through n sets of x and y pairs of points }
  8.  
  9. var    i        : integer;
  10.  
  11.     sum_x,sum_y,sum_xy,sum_x2,
  12.     sum_y2,xi,yi,sxy,sxx,
  13.     syy        : real;
  14.  
  15. begin         { linfit }
  16.   sum_x:=0.0;
  17.   sum_y:=0.0;
  18.   sum_xy:=0.0;
  19.   sum_x2:=0.0;
  20.   sum_y2:=0.0;
  21.   for i:=1 to n do
  22.     begin
  23.       xi:=x[i];
  24.       yi:=y[i];
  25.       sum_x:=sum_x+xi;
  26.       sum_y:=sum_y+yi;
  27.       sum_xy:=sum_xy+xi*yi;
  28.       sum_x2:=sum_x2+xi*xi;
  29.       sum_y2:=sum_y2+yi*yi;
  30.     end;
  31.   sxx:=sum_x2-sum_x*sum_x/n;
  32.   sxy:=sum_xy-sum_x*sum_y/n;
  33.   syy:=sum_y2-sum_y*sum_y/n;
  34.   b:=sxy/sxx;
  35.   a:=((sum_x2*sum_y-sum_x*sum_xy)/n)/sxx;
  36.   for i:=1 to n do
  37.     y_calc[i]:=a+b*x[i]
  38. end;        { LINFIT }
  39.  
  40.